home *** CD-ROM | disk | FTP | other *** search
- /*
-
- CMacTCPDriver.c
- Superclass: CObject
-
- The MacTCP Driver implementation (Chapter 2, MacTCP Programmer's Guide).
-
- Copyright © NCSA, University of Illinois; June 2, 1992
- Eric Johnson, John Newlin and Igor Livshits
-
- This code may be used, modified, and distributed free of charge and obligation.
-
- */
-
- #include "CMacTCPDriver.h"
-
- extern CError* gError; // The global error handler
-
- /*=====================*/
- /*===---------------===*/
-
- OSErr CMacTCPDriver::IMacTCPDriver(void)
- Begin
- short refNum= Null; // Local storage
- OSErr error; // A possible error condition
-
- MakeParameters();
- error= OpenDriver(kDriverName, &refNum);
-
- if (error != noErr)
- {
- gError->PostAlert(kDriverError, kCantOpen);
- return error;
- }
-
- this->refNum= refNum;
-
- parameterBlock->cntrlParam.ioCRefNum= refNum;
- SetCompletionProc(Null);
- SetMode(kSynchronous);
-
- return noErr;
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::Dispose(void)
- Begin
- ForgetPtr(parameterBlock);
-
- inherited::Dispose();
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::SendControlInfoToDriver()
- Begin
- OSErr error;
-
- error= PBControl(parameterBlock, True);
- itsLastError= error;
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::Process()
- Begin
- while (parameterBlock->cntrlParam.ioResult == kInProgress)
- Wait();
-
- itsLastError= parameterBlock->cntrlParam.ioResult;
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::Wait(void)
- Begin
- SubclassResponsibility();
- End
-
- /*===---------------===*/
-
- Boolean CMacTCPDriver::Done(void)
- Begin
- return True; // Check the status, we are faking async calls
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::SetCompletionProc(ProcPtr myRoutine)
- Begin
- parameterBlock->cntrlParam.ioCompletion= myRoutine;
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::SetMode(Boolean mode)
- Begin
- fAsynchronous= mode; // True if the call is asynchronous
- End
-
- /*===---------------===*/
-
- Boolean CMacTCPDriver::GetMode(void)
- Begin
- return fAsynchronous; // True if the call is asynchronous
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::SetSizeOfParameters(void)
- Begin
- SubclassResponsibility();
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::MakeParameters()
- Begin
- ParmBlkPtr pb= Null;
-
- SetSizeOfParameters();
- pb= (ParmBlkPtr)NewPtrClear(sizeOfParameters);
- parameterBlock= pb; // Set up the parameter block
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::SetParameters(ParmBlkPtr newParameters)
- Begin
- BlockMove(newParameters, parameterBlock, sizeOfParameters);
- End
-
- /*===---------------===*/
-
- void CMacTCPDriver::GetParameters(ParmBlkPtr* duplicateParameters)
- Begin
- if (!(*duplicateParameters))
- *duplicateParameters= (ParmBlkPtr)NewPtr(sizeOfParameters);
-
- BlockMove(parameterBlock, *duplicateParameters, sizeOfParameters);
- End
-
- /*===---------------===*/
- /*=====================*/